[ Day 6 ]
說明:
在昨天介紹了使用mysql直連mysql資料庫,但下原生語句的方式一來對資料庫相依性太高
二來在程式碼中要管理一堆SQL語句字串,並不是很好維護。
因此今天來介紹knex.js這個Query Builder套件,簡化語句。
一、安裝knex
npm i knex --save
二、config配置與連線
knexDB.js
const knex = require('knex')({
client: 'mysql',
connection: {
host : 'localhost',
user : 'root',
password : '123456',
database : 'demo'
}
});
這裡的client可以選擇所需要的database種類,包含mysql,oracle,sql server......等
另外需安裝過該資料庫的驅動(如day5所安裝的mysql)
如沒安裝,啟動時會產生error
三、查詢語句builder
knex('user').select('user_name')
.then((projectNames) => {
// console.log(projectNames)
for(result in projectNames) {
console.log(projectNames[result]);
}
}).catch((err) => {
console.error(err)
})
加上where條件
knex('user').select('*').
where({
user_name: 'cat'
})
複合where條件
knex('user')
.select('*')
.leftJoin('user_ii', 'user.user_id', 'user_ii.user_id')
.where('user.user_id', '<' , '16')
.andWhere((builder) => {
builder.whereIn('gender', ['2','3','4'])
})
在where的後面再串上andwhere,但裡面是一個where in 的查詢條件
所以要傳入一個innner function 有builder參數,再進行wherein查詢
四、insert資料
knex('user')
.insert({user_name: 'knexUserName'})
.then(result => {
console.log(result)
})
回傳主鍵值
五、update資料
knex('user')
.where('user_id', '16')
.update({
user_name: 'zhang',
}).then(result => {
console.log(result)
})
六、刪除資料
knex('user')
.where('user_id', '16')
.del()
.then(result => {
console.log(result)
})
七、table join
knex('user')
.select('*')
.leftJoin('user_ii', 'user.user_id', 'user_ii.user_id')
.then((projectNames) => {
for(result in projectNames) {
console.log(projectNames[result]);
}
}).catch((err) => {
console.error(err)
})
詳細語句的方法可以在官網找到
參考來源:http://knexjs.org/
Day6結束